﻿#pragma once
#include "DLL.h"

namespace DarkStorm2D {
	//! Klasa zawiera strukturę błędów, które mogą wystąpić w silniku.
	class DLLDARKSTORM2D CError{
	private:
		int m_ErrorType;
		int m_Error;
	public:
		//! Typy błędów.
		enum EErrorType {
			//! Brak błędu.
			NO_ERRORS,
			//! Błędy systemowe.
			TYPE_SYSTEM_ERROR,
			//! Inne błędy.
			TYPE_OTHER_ERROR,
		};

		//! Błędy systemowe.
		enum ESystemError {
			FILE_LOAD,
			RESOURCE_TYPE,
		};

		//! Inne błędy.
		enum EOtherError {
			UNKNOWN,
		};

		//! Domyślny konstruktor można użyć do zasygnalizowania, że nie ma błędu.
		CError() {m_ErrorType = NO_ERRORS; m_Error = NO_ERRORS;}

		//! Przypisuje typ i wartość błędu.
		CError(int ErrorType, int Error) {m_ErrorType = ErrorType; m_Error = Error;}

		~CError() {m_ErrorType = NO_ERRORS; m_Error = NO_ERRORS;}

		//! @return Typ błędu;
		int GetErrorType() {return m_ErrorType;}

		//! @return Błąd;
		int GetError() {return m_Error;}

		inline const CError& operator= (CError& Error) {return CError(this->m_ErrorType,this->m_Error);} 
	};
};